/**
 * 认证相关工具函数
 */

/**
 * 检查用户是否已登录且未过期
 * @returns {boolean} 是否有效登录
 */
export function isAuthenticated() {
  try {
    const authData = localStorage.getItem('auth_token')
    if (!authData) {
      return false
    }

    const auth = JSON.parse(authData)
    const now = new Date().getTime()

    // 检查是否过期
    if (now > auth.expireTime) {
      // 已过期，清除登录信息
      localStorage.removeItem('auth_token')
      return false
    }

    return true
  } catch (error) {
    // 解析失败，清除无效数据
    localStorage.removeItem('auth_token')
    return false
  }
}

/**
 * 获取登录剩余时间（毫秒）
 * @returns {number} 剩余时间，如果已过期返回0
 */
export function getRemainingTime() {
  try {
    const authData = localStorage.getItem('auth_token')
    if (!authData) {
      return 0
    }

    const auth = JSON.parse(authData)
    const now = new Date().getTime()
    const remaining = auth.expireTime - now

    return remaining > 0 ? remaining : 0
  } catch (error) {
    return 0
  }
}

/**
 * 获取登录信息
 * @returns {object|null} 登录信息对象
 */
export function getAuthData() {
  try {
    const authData = localStorage.getItem('auth_token')
    if (!authData) {
      return null
    }

    const auth = JSON.parse(authData)
    const now = new Date().getTime()

    // 检查是否过期
    if (now > auth.expireTime) {
      localStorage.removeItem('auth_token')
      return null
    }

    return auth
  } catch (error) {
    localStorage.removeItem('auth_token')
    return null
  }
}

/**
 * 退出登录
 */
export function logout() {
  localStorage.removeItem('auth_token')
}

/**
 * 格式化剩余时间
 * @param {number} milliseconds 毫秒数
 * @returns {string} 格式化后的时间字符串
 */
export function formatRemainingTime(milliseconds) {
  if (milliseconds <= 0) {
    return '已过期'
  }

  const hours = Math.floor(milliseconds / (1000 * 60 * 60))
  const minutes = Math.floor((milliseconds % (1000 * 60 * 60)) / (1000 * 60))

  if (hours > 0) {
    return `${hours}小时${minutes}分钟`
  } else {
    return `${minutes}分钟`
  }
}
